package com.bigdata;

import org.apache.commons.lang.math.NumberUtils;
/**
 * @className: LogUtils
 * @description: TODO Flume日志过滤工具类
 * @author 石永鑫大数据工作室
 * @date: 2021/3/26 12:00
 * @version: 1.0
 */
public class LogUtils {

    /**
     * @Param log:  flume接收到的事件日志数据
     * @return boolean 合法数据
     * @description TODO 事件日志数据合法校验：
     */
    public static boolean validateEvent(String log) {
        // 服务器时间 | json
        // 1549696569054 | {"cm":{"ln":"-89.2","sv":"V2.0.4","os":"8.2.0","g":"M67B4QYU@gmail.com","nw":"4G","l":"en","vc":"18","hw":"1080*1920","ar":"MX","uid":"u8678","t":"1549679122062","la":"-27.4","md":"sumsung-12","vn":"1.1.3","ba":"Sumsung","sr":"Y"},"ap":"weather","et":[]}
        // 1 切割
        String[] logContents = log.split("\\|");
        // 2 校验
        if(logContents.length != 2){
            return false;
        }
        //3 校验服务器时间 ： 判断长度和是否为数字
        if (logContents[0].length()!= 13 || !NumberUtils.isDigits(logContents[0])){
            return false;
        }
        // 4 校验json
        if (!logContents[1].trim().startsWith("{") || !logContents[1].trim().endsWith("}")){
            return false;
        }

        return true;
    }

    /**
     * App启动日志数据合法校验：
     * @param log   flume接收到的App启动数据
     * @return       合法数据
     */
    public static boolean validateStart(String log) {
        //非空判断：
        if (log == null){
            return false;
        }
        // 校验json
        if (!log.trim().startsWith("{") || !log.trim().endsWith("}")){
            return false;
        }

        return true;
    }
}
